package club.beimeng.sendEmail;

import com.sun.mail.util.MailSSLSocketFactory;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties;

public class SendEmail2 {

    public static void main(String[] args) throws Exception {

        Properties prop = new Properties();
        prop.setProperty("mail.host", "smtp.qq.com");  //设置QQ邮件服务器 smtp.exmail.qq.com
//        prop.setProperty("mail.host", "smtp.exmail.qq.com");  //设置QQ邮件服务器 smtp.exmail.qq.com // 企业邮箱发件地址
        prop.setProperty("mail.transport.protocol", "smtp");  // 邮件发送协议

        // 关于QQ邮箱，还要设置SSL加密，加上以下代码即可
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        prop.put("mail.smtp.ssl.enable", "true");
        prop.put("mail.smtp.ssl.socketFactory", sf);

        /*使用JavaMail发送邮件的5个步骤*/

        //1 创建定义整个应用程序所需的环境信息的 Session 对象
        Session session = Session.getDefaultInstance(prop);

            //开启Session的debug模式，这样就可以查看到程序发送Email的运行状态
//        session.setDebug(true);

        //2 通过session得到transport对象,用它装载Message(邮件本体对象)
        Transport ts = session.getTransport();

        //3、为transport对象配置发件人，授权码，以及目标服务器
//        ts.connect("smtp.exmail.qq.com", "baolong@beimeng.club", "c9zzJ2zzknXXk9DU");// qq企业邮箱
        ts.connect("smtp.qq.com", "2877025798@qq.com", "ssyyzjurppykdeag");// 铭艺
//        ts.connect("smtp.163.com", "beimengclub@163.com", "VTMINOMQLJISRPDS");// 网易邮箱

        //4、创建邮件本体
        Message message = getEmailContent(session);

        //5、发送邮件
        ts.sendMessage(message, message.getAllRecipients());

        ts.close();
    }

    public static Message getEmailContent(Session session) throws MessagingException { // 配置邮件对象，设置发送内容
        //创建邮件对象
        MimeMessage message = new MimeMessage(session);

        //指明邮件的发件人
        message.setFrom(new InternetAddress("2877025798@qq.com")); // 这个可能可以改动

        //指明邮件的收件人，现在发件人和收件人是一样的，那就是自己给自己发
//        message.setRecipient(Message.RecipientType.TO, new InternetAddress("2877025798@qq.com"));
//        message.setRecipient(Message.RecipientType.TO, new InternetAddress("1192384722@qq.com"));
        message.setRecipients(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress("1192384722@qq.com"),new InternetAddress("2877025798@qq.com")});

        //邮件的标题
        message.setSubject("只包含文本的简单邮件");

        // 准备图片数据
        MimeBodyPart image = new MimeBodyPart();
        DataHandler dh = new DataHandler(new FileDataSource("E:\\data\\OneDrive\\图片\\屏幕快照\\2021-03-12.png"));
        image.setDataHandler(dh);
        image.setContentID("2021-03-12.png");

        // 准备正文数据
        MimeBodyPart text = new MimeBodyPart();
        text.setContent("这是一封邮件正文带图片<img src='cid:2021-03-12.png'>的邮件", "text/html;charset=UTF-8");

        // 描述数据关系
        MimeMultipart mm = new MimeMultipart();
        mm.addBodyPart(text);
        mm.addBodyPart(image);
        mm.setSubType("related");


        //设置到消息中，保存修改
        message.setContent(mm);
        message.saveChanges();

//
//        //邮件的文本内容
//        message.setContent("你好啊！", "text/html;charset=UTF-8");

        return message;
    }

}

// 代码来自 https://blog.csdn.net/qq_41151659/article/details/96475739
